﻿/******************CRM.SanPham.cs********************\
 * Module name: Logic San Pham
 * Description: Business logic for San Pham
 * Author: viettp
\****************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Windows.Controls.Ribbon;
using OODCRM.Dialogs;
using OODCRM.Common;
using System.Windows;

namespace OODCRM
{
    public partial class MainWindow : RibbonWindow
    {

        internal void CoHoi_NewExecuted()
        {
            dicDialogData[CRMDialog.ThemCoHoi] = new COHOI()
            {
                DOITUONG = new DOITUONG()
                {
                    IdDoiTuong = System.Guid.NewGuid(),
                    ThoiDiemTao = DateTime.Now,
                    ThoiDiemSua = DateTime.Now,
                    DungChung = true,
                    LOAIDOITUONG1 = dataContext.LOAIDOITUONGs.FirstOrDefault(),
                    User = dataContext.Users.FirstOrDefault(),
                    User1 = dataContext.Users.FirstOrDefault(),
                    User2 = dataContext.Users.FirstOrDefault(),
                },                
            };

            dicDialogMode[CRMDialog.ThemCoHoi] = DialogMode.Them;

            EnableDialog(CRMDialog.ThemCoHoi);
        }

        internal void CoHoi_EditExecuted()
        {
            COHOI item = dgrCoHoi.SelectedItem as COHOI;
            if (item == null) return;

            dicDialogData[CRMDialog.ThemCoHoi] = item;

            dicDialogMode[CRMDialog.ThemCoHoi] = DialogMode.Sua;

            EnableDialog(CRMDialog.ThemCoHoi);
        }

        internal void CoHoi_DeleteExecuted()
        {
            COHOI item = dgrCoHoi.SelectedItem as COHOI;
            if (item == null) return;

            // Check FK before delete
            var x1 = dataContext.CHITIETPHANLOAICOHOIs.FirstOrDefault(x => x.MaCoHoi == item.MaHieu) as CHITIETPHANLOAICOHOI;
            if (x1 != null)
            {
                MessageBox.Show("Tồn tại chi tiết phân loại cơ hội thuộc cơ hội này! (" + x1.TenPhanLoai + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x2 = dataContext.CHITIETLIENHECOHOIs.FirstOrDefault(x => x.MaCoHoi == item.MaHieu) as CHITIETLIENHECOHOI;
            if (x2 != null)
            {
                MessageBox.Show("Tồn tại chi tiết liên hệ  thuộc cơ hội này! (" + x2.MaCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x3 = dataContext.NHATKICOHOIs.FirstOrDefault(x => x.MaHieu == item.MaHieu) as NHATKICOHOI;
            if (x3 != null)
            {
                MessageBox.Show("Tồn tại nhật ký cơ hội của cơ hội này ",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x4 = dataContext.CHITIETDOITHUCOHOIs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as CHITIETDOITHUCOHOI;
            if (x4 != null)
            {
                MessageBox.Show("Tồn tại đối thủ của cơ hội này! (" + x4.COHOI.TenCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x5 = dataContext.CHITIETDOITACCOHOIs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as CHITIETDOITACCOHOI;
            if (x5 != null)
            {
                MessageBox.Show("Còn đối tác thuộc cơ hội này! (" + x5.COHOI.TenCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Confirm and delete
            if (MessageBox.Show(
                    "Bạn có chắc muốn xoá cơ hội \"" + item.TenCoHoi + "\" ?", "Xác nhận xoá",
                    MessageBoxButton.YesNo,
                    MessageBoxImage.Question
                    )
                    == MessageBoxResult.Yes)
            {
                listCoHoi.Remove(item);
                dataContext.COHOIs.DeleteOnSubmit(item);
                try
                {
                    dataContext.SubmitChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}
